{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import torch, torchvision\n",
    "import torch.nn as nn\n",
    "import torch.optim as optim\n",
    "from torch.optim import lr_scheduler\n",
    "import torchvision.datasets as datasets\n",
    "import torch.utils.data as data\n",
    "import torchvision.transforms as transforms\n",
    "from torch.autograd import Variable\n",
    "import torchvision.models as models\n",
    "import matplotlib.pyplot as plt\n",
    "import time, os, copy, numpy as np\n",
    "from livelossplot import PlotLosses\n",
    "from train_model import train_model\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_transforms = { 'train': transforms.Compose([transforms.ToTensor()]),\n",
    "                    'val'  : transforms.Compose([transforms.ToTensor(),]) }\n",
    "\n",
    "data_dir = 'images/64'\n",
    "image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x), data_transforms[x])\n",
    "                  for x in ['train', 'val']}\n",
    "dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=100, shuffle=True, num_workers=64)\n",
    "              for x in ['train', 'val']}\n",
    "dataset_sizes = {x: len(image_datasets[x]) for x in ['train', 'val']}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Load Resnet18 with pretrained weights\n",
    "model_ft = models.resnet18()\n",
    "#Finetune Final few layers to adjust for tiny imagenet input\n",
    "model_ft.avgpool = nn.AdaptiveAvgPool2d(1)\n",
    "num_ftrs = model_ft.fc.in_features\n",
    "model_ft.fc = nn.Linear(num_ftrs, 200)\n",
    "# model_ft.conv1 = nn.Conv2d(3,64, kernel_size=(3,3), stride=(1,1), padding=(1,1))\n",
    "# model_ft.maxpool = nn.Sequential()\n",
    "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
    "model_ft = model_ft.to(device)\n",
    "#Multi GPU\n",
    "model_ft = torch.nn.DataParallel(model_ft, device_ids=[0, 1])\n",
    "model_ft.load_state_dict(torch.load('./models/resnet18_224_w.pt'))\n",
    "\n",
    "# pretrained_dict = torch.load('./models/resnet18_224_w.pt')\n",
    "# model_ft_dict = model_ft.state_dict()\n",
    "# first_layer_weight = model_ft_dict['module.conv1.weight']\n",
    "# first_layer_bias  = model_ft_dict['module.conv1.bias']\n",
    "# pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_ft_dict}\n",
    "\n",
    "# model_ft_dict.update(pretrained_dict) \n",
    "# model_ft_dict['module.conv1.weight'] = first_layer_weight\n",
    "# model_ft_dict['module.conv1.bias']   = first_layer_bias\n",
    "# model_ft.load_state_dict(model_ft_dict)\n",
    "\n",
    "\n",
    "#Loss Function\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "# Observe that all parameters are being optimized\n",
    "optimizer_ft = optim.SGD(model_ft.parameters(), lr=0.001, momentum=0.9)\n",
    "\n",
    "# Decay LR by a factor of 0.1 every 7 epochs\n",
    "exp_lr_scheduler = lr_scheduler.StepLR(optimizer_ft, step_size=7, gamma=0.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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cRZwjde1hJMo6rNA/ZaEL/VbEciLfitsl2kXERERERGpbTRFUEREREREJEgUsERERERERIJEAUtERERERCRIFLBERERERESCRAFLREREREQkSBSwRGoxM+tvZlr2V0REaj31WSJ+ClgiIiIiIiJBooAlEgRmdqmZzTCzuWb2uJnFmNlOM3vAzOab2btmlhp4bYGZfW5mJWb2ipk1CmxvZWbvmNk8M5ttZnmBw9czs4lmtsjMnrPAFRBFREROhvoskdBSwBL5gcysPXAx0Mc5VwBUAJcAdYFi51xH4EPgjsBbngFucc7lA6VVtj8HPOyc6wKcApQHtncFfgV0AFoCfULeKBERiUjqs0RCL9brAkQiwACgOzAz8EVdHWAjUAn8J/CaZ4GXzSwZaOic+zCw/WngRTOrD2Q5514BcM7tBQgcb4ZzrizwfC7QHPgk9M0SEZEIpD5LJMQUsER+OAOeds7ddthGsz8c8Tp3ksffV+VxBfp3KyIiJ099lkiIaYqgyA/3LnChmaUBmFljM2uG/9/XhYHXjAQ+cc5tA7aY2WmB7ZcBHzrndgBlZjYscIwEM0uq0VaIiEg0UJ8lEmL6VkHkB3LOLTCz3wNvmZkPOABcD+wCigL7NuKf8w5wOfBYoDNaDlwR2H4Z8LiZ3RU4xk9qsBkiIhIF1GeJhJ45d7IjwCJyPGa20zlXz+s6REREvo/6LJHg0RRBERERERGRINEIloiIiIiISJBoBEtERERERCRIFLBERERERESCRAFLREREREQkSBSwREREREREgkQBS0REREREJEgUsERERERERILk/wNy9gx6JxSCBQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 864x576 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.5321 Acc: 0.8608\n",
      "Val Loss: 2.1013 Acc: 0.5390\n",
      "Best Val Accuracy: 0.5452\n",
      "\n",
      "Training complete in 7m 19s\n",
      "Best val Acc: 0.545200\n"
     ]
    }
   ],
   "source": [
    "#Train\n",
    "model_ft = train_model(model_ft, dataloaders, dataset_sizes, criterion, optimizer_ft, exp_lr_scheduler,\n",
    "                       num_epochs=7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Load Resnet18 with pretrained weights\n",
    "model_ft = models.resnet18()\n",
    "#Finetune Final few layers to adjust for tiny imagenet input\n",
    "model_ft.avgpool = nn.AdaptiveAvgPool2d(1)\n",
    "num_ftrs = model_ft.fc.in_features\n",
    "model_ft.fc = nn.Linear(num_ftrs, 200)\n",
    "model_ft.conv1 = nn.Conv2d(3,64, kernel_size=(3,3), stride=(1,1), padding=(1,1))\n",
    "model_ft.maxpool = nn.Sequential()\n",
    "\n",
    "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n",
    "model_ft = model_ft.to(device)\n",
    "#Multi GPU\n",
    "model_ft = torch.nn.DataParallel(model_ft, device_ids=[0, 1])\n",
    "pretrained_dict = torch.load('./models/resnet18_224_w.pt')\n",
    "model_ft_dict = model_ft.state_dict()\n",
    "first_layer_weight = model_ft_dict['module.conv1.weight']\n",
    "first_layer_bias  = model_ft_dict['module.conv1.bias']\n",
    "pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_ft_dict}\n",
    "\n",
    "model_ft_dict.update(pretrained_dict) \n",
    "model_ft_dict['module.conv1.weight'] = first_layer_weight\n",
    "model_ft_dict['module.conv1.bias']   = first_layer_bias\n",
    "model_ft.load_state_dict(model_ft_dict)\n",
    "\n",
    "\n",
    "#Loss Function\n",
    "criterion = nn.CrossEntropyLoss()\n",
    "# Observe that all parameters are being optimized\n",
    "optimizer_ft = optim.SGD(model_ft.parameters(), lr=0.001, momentum=0.9)\n",
    "\n",
    "# Decay LR by a factor of 0.1 every 7 epochs\n",
    "exp_lr_scheduler = lr_scheduler.StepLR(optimizer_ft, step_size=7, gamma=0.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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l3Pw4MFj+912222kpKSQmJjIkCFDAHj99dfJycmha9eudO3aFYB69eqxfft2AF5++WWSkpJISkri1VdfPXa9+Ph4brnlFhITE7n44ouPu47IuWKMoU9yFL/e14VbO5/H2IXZXPjiFIZPX0dufoHT4YmUS+qbjqd7sKRYtu09zH8nLOPbBdnE1Ajm4xtb06VxTafDEnHOxIdh8xLPnrNWU+jx7Cl36d+/P/fccw933HEHACNHjmTSpEncfffdVKlShe3bt3P++efTu3fvkxaZeeeddwgODmbZsmUsXryYli1bHmt7+umnqVGjBvn5+XTr1o3Fixdz99138/LLLzN58mTCw8OPO9e8efP46KOP+P3337HW0rZtWzp37kz16tVZtWoVX375Je+//z79+vVj9OjRXHfddSX8IYkUT0igHw/3aEK/lLo8MT6DYd9lMGLuRob2TqT9eeGnP4FIWeVA/6S+6XgadpBTKiiwfD57A91emsJ3i3O468IG/PjvC5RciTikRYsWbN26lZycHBYtWkT16tWpVasW//nPf2jWrBndu3cnOzubLVu2nPQcv/3227HOpFmzZjRr1uxY28iRI2nZsiUtWrRg6dKlZGRknDKe6dOnc/nllxMSEkLlypW54oormDZtGgBxcXEkJycD0KpVK9avX1/C717kzNWPqMzHN7bm/etTOJibzzXv/84dX8wnZ5dGVEU8RX3T8TSCJSe1NGc3j36bzsLMXbSrH8aTfZNoULOy02GJeIfTjDSdS1dddRWjRo1i8+bN9O/fn//9739s27aNefPm4e/vT7169Th06NAZn3fdunW8+OKLzJ07l+rVqzNw4MCzOs9RgYGBx577+vpqiqA4xhjDRQmRdGoYzv9NXcvbU1bz67Kt3HlhA27uFEegn9ZqlHLEof5JfdOfNIIlf7HvcB7DxmfQ643pZP1xgFf7J/PFLW2VXIl4if79+zNixAhGjRrFVVddxe7du6lZsyb+/v5MnjyZDRs2nPL4Cy64gC+++AKA9PR0Fi9eDMCePXsICQmhatWqbNmyhYkTJx47JjQ0lL179/7lXJ06dWLMmDEcOHCA/fv38+2339KpUycPfrcinhPk78u/ujfk53s707lRBC9MWsElr/zGr8tP/qm6iBSP+qY/aQRLjrHWMjF9M8PGZ7Bl7yGuaRPDg5c0oWqwyq6LeJPExET27t1LVFQUtWvX5tprr6VXr140bdqUlJQUmjRpcsrjb7vtNm688Ubi4+OJj4+nVatWADRv3pwWLVrQpEkToqOj6dChw7FjBg0aRGpqKnXq1GHy5MnHtrds2ZKBAwfSpk0bAG6++WZatGih6YDi1aJrBPPu31sxbdU2ho5byj8+TqNbk5o83iuB2LAQp8MTKZPUN/3JWGtL5ULFlZKSYk9X8148b+OOAzw+Lp0pK7aRULsKT1+eRIuY6k6HJeJVli1bRnx8vNNhlDsn+rkaY+ZZa1McCumE1D+VT0fyCvhk5npe/XklufmWQRfU5/au5xEcoM+gpexQ/+R5Jemb9Nejgjucl8/7v63ljV9X4+djGNwzgRvaxarsuoiIVAgBfj7cckF9+iTX4ZmJy3lz8mq+mZ/Fo5clcGnTWieteCYicjJKsCqwWWt28NiYJazZtp9Lm9ZicM8Ealet5HRYIiIipa5mlSBe6Z/MNW1jGDJ2KXd8MZ/254UxtHcijSJDnQ5PRMoQDVNUQNv3HeberxZy9fuzOZJfwEcDW/P2ta2UXIkUg7dNqy7r9PMUb9O6Xg3G39WRJ/smsTRnDz1em8aT32Ww51Cu06GJnJL+nnpOSX+WGsGqQAoKLCPmZvLsxGUczM3nzq4NuKNrAyoFqDytSHEEBQWxY8cOwsLCNG3IA6y17Nixg6CgIKdDETmOr4/h7+fHclnT2rz44wqGz1jH2IU5PNyjCVe0iMLHR7//4l3UP3mOJ/omJVgVREbOHh4ds4QFG3fRNq4GT1+eRIOamvIgcibq1q1LVlYW27ZtczqUciMoKIi6des6HYbICdUICeC/lzfl6tYxPD4unfu/XsQXv29gWJ8kkqKqOh2eyDHqnzyrpH1TsRIsY0wq8BrgC3xgrX22SHsM8AlQzb3Pw9baCe62R4CbgHzgbmvtpLOOVs7YvsN5vPLTSj6euZ5qlfx5uV9zLm8RpU83RM6Cv78/cXFxTochIqWsad2qjL61Pd8syObZicvo9eZ0rm4TwwMXN6Z6SIDT4Ymof/Iyp02wjDG+wFvARUAWMNcYM85am1Fot8eAkdbad4wxCcAEoJ77+QAgEagD/GyMaWStzff0NyLHs9Yyaelmho7LYPOeQ1zdJoaHUhtTLVgdgYiIyJny8TFc2aouFydG8trPq/h45nq+X7yJ+y9uxIA2Mfir+q6IuBXnr0EbYLW1dq219ggwAuhTZB8LVHE/rwrkuJ/3AUZYaw9ba9cBq93nk3Moc+cBbvokjVs/n0+1YH9G39aeZ65oquRKRESkhKoE+TO4ZwIT/9WJxDpVGDx2KV1fnML/ft/A4Tx9fiwixZsiGAVkFnqdBbQtss9Q4EdjzF1ACNC90LGzixwbVfQCxphBwCCAmJiY4sQtJ3Akr4D3p63ljV9X4WMMj10Wz8D29bSmlYiIiIc1igzlfze3ZfKKrbz+y2oe/TadN35ZzT8712dA6xgVkBKpwDxV5OJq4GNr7UvGmHbAZ8aYpOIebK19D3gPICUlRTUmz8LstTt4bEw6q7fuIzWxFo/3SqBONZVdFxEROVeMMVzYJJKujWsyY/UO3vh1FU+Mz+Ctyau5pVN9rj0/lsqBqicmUtEU57c+G4gu9Lque1thNwGpANbaWcaYICC8mMdKCezYd5j/TljO6PlZ1K1eieEDU7iwSaTTYYmIiFQYxhg6NgynY8Nw5qzbyRu/ruKZict5Z+oa/tEhjhva16NqJX+nwxSRUlKcuWNzgYbGmDhjTACuohXjiuyzEegGYIyJB4KAbe79BhhjAo0xcUBDYI6ngq/oVm7ZS7eXpzJuUTa3dzmPn/7dWcmViIiIg9rE1eCzm9oy5o4OpMRW5+WfVtLx2V95cdIKdu4/4nR4IlIKTjuCZa3NM8bcCUzCVYJ9uLV2qTFmGJBmrR0H3Ae8b4z5N66CFwOtawnkpcaYkUAGkAfcoQqCnpGXX8D9Xy/Cxxi+v7sTjSK1ppWIiIi3SI6uxgc3tGZpzm7emryat6asZviMdVx3fiw3d4qjZqgW2BYpr4wrD/IeKSkpNi0tzekwvN47U9bw3A/LefOaFvRsVsfpcEREPMoYM89am+J0HIWpf5KSWLVlL29PWcPYhdn4+/pwdZsYBl1QX/dLi5Qhxe2bVF6uDFq9dR+v/LyS1MRaXNa0ttPhiIiIyGk0jAzllf7J/HpfF/omR/H57A10fmEyj3yzmI07Djgdnoh4kBKsMia/wPLAqEUEB/jyZN8kjDFOhyQiIiLFVC88hOeubMaUB7owoHUMo+dn0/WlKdw7ciGrt+5zOjwR8QAlWGXMRzPWsWDjLob2SiQiNNDpcEREROQs1K0ezJN9k5j2YFcGtq/HhCWbuOiVqdz5xXyWb97jdHgiUgJKsMqQddv388KkFXSPr0mfZN13JSIiUtZFVglicM8EZjx0Ibd1Po8pK7aR+uo0bvk0jcVZu5wOT0TOgla/KyMKCiwPjVpMoJ8PT1/eVFMDRUREypGwyoE8mNqEQRfU5+OZ6xk+fR0/ZWyhc6MI7u7WgFaxNZwOUUSKSSNYZcSns9YzZ/1OBvdMILKKSruKiIiUR9WCA7ineyNmPHwhD6Y2Zkn2bv72ziyufm82M1dvx9uqP4vIXynBKgM27jjAcz+soEvjCK5sVdfpcEREROQcCw3y5/YuDZj+UFcG90xgzbZ9XPPB71z57iwmr9iqREvEiynB8nIFBZaHRi/G18fwX00NFBERqVCCA/y4qWMcvz3YlSf7JrF59yFu/Gguvd+cwaSlmykoUKIl4m2UYHm5L+ZsZNbaHTx6WbwWIxQREamggvx9+fv5sUy+vwvP/60Zew7l8s/P5tHjtWmMW5RDvhItEa+hBMuLZf1xgGcmLKNjg3AGtI52OhwRERFxWICfD/1aR/PLvZ15tX8y+dZy95cLuOjlqYyal0VufoHTIYpUeEqwvJS1lke+WYIFnrlCUwNFRETkT36+PvRtEcWP91zAO9e2JMjfl/u/XsSFL03hi983cjgv3+kQRSosJVheamRaJtNWbeeRHk2IrhHsdDgiIiLihXx8DD2a1ub7uzvy4Q0p1AgJ5D/fLqHLC1P4eMY6DuUq0RIpbUqwvNCm3Qd56rtlnF+/Bte2jXU6HBEREfFyxhi6xUcy5vb2fHZTG6JrBDN0fAYdn5vM/01dw/7DeU6HKFJhaKFhL2Ot5T/fLCGvwPLc35rh46OpgSIiIlI8xhg6NYygU8MIfl+7gzcnr+aZict5Z+oabuoQx/Xt61G1kr/TYYqUaxrB8jLfLshm8optPHBJY2LDQpwOR0SkTDLGpBpjVhhjVhtjHj7JPv2MMRnGmKXGmC9KO0aRc61t/TA+u6kt39zenlYx1Xnpp5V0fPZXXvpxBTv3H3E6PJFySyNYXmTrnkM8MT6DlNjqDGxfz+lwRETKJGOML/AWcBGQBcw1xoyz1mYU2qch8AjQwVr7hzGmpjPRipx7LWOq8+HA1qRn7+atyat549fVfDh9HdedH8vNneKoGRrkdIgi5YoSLC9hreWxMekcys3n+Ss1NVBEpATaAKuttWsBjDEjgD5ARqF9bgHestb+AWCt3VrqUYqUsqSoqrxzXStWbtnL25NX88G0tXwycz1Xt4lh0AX1td6miIdoiqCXGL94Ez9mbOG+ixtRP6Ky0+GIiJRlUUBmoddZ7m2FNQIaGWNmGGNmG2NST3QiY8wgY0yaMSZt27Zt5yhckdLVKDKUVwe04Jf7utAnuQ6fz95A5xcm88g3S9i444DT4YmUeUqwvMD2fYcZMjad5Ohq3NSxvtPhiIhUBH5AQ6ALcDXwvjGmWtGdrLXvWWtTrLUpERERpRyiyLkVFx7C81c2Z8oDXejfOprR87Lo+tIU7hu5iDXb9jkdnkiZpQTLCwwZu5T9h/N54cpm+GpqoIhISWUD0YVe13VvKywLGGetzbXWrgNW4kq4RCqcutWDeapvU6Y91JWB7evx/ZIcur88lTu/mM/yzXucDk+kzFGC5bCJSzbx/ZJN/Kt7QxpGhjodjohIeTAXaGiMiTPGBAADgHFF9hmDa/QKY0w4rimDa0szSBFvE1kliME9E5j+0IXc2vk8Ji/fSuqr0xj0aRpLsnY7HZ5ImaEiFw7auf8Ig8emkxRVhUEXaGqgiIgnWGvzjDF3ApMAX2C4tXapMWYYkGatHeduu9gYkwHkAw9Ya3c4F7WI9wivHMhDqU345wX1+WjGej6asY4fM7bQqWE417erx4VNamrGjcgpGGut0zEcJyUlxaalpTkdRqn414gFTFiyiXF3diS+dhWnwxER8RrGmHnW2hSn4yisIvVPIoXtPZTLZ7M38OnMDWzec4ioapW47vxY+reOpkZIgNPhiZSa4vZNmiLokJ8ytjB2YQ53dG2g5EpERES8VmiQP7d3acC0h7ryzrUtia5Ried+WM75z/zCfSMXsThrl9MhingVTRF0wO4DuTz67RKa1Arl9i4NnA5HRERE5LT8fX3o0bQ2PZrWZuWWvXw6az3fzM9m9PwsmkdX44Z2sVzatDZB/r5OhyriKI1gOWDYdxns2H+EF69qToCf/glERESkbGkUGcpTfZsy+z/dGNorgb2Hcrl35CLaP/srz/+wnOxdB50OUcQxGsEqZZNXbGX0/Czu7NqApKiqTocjIiIictaqBPkzsEMcN7Svx4zVO/h01nrenbqGd6euoXt8JDe0///27jw66vLu+/j7m33fyJ6QEBbDkhjAyCJaQUUBFXBptdbt7tPj/bTazdNal7Za9am29Wnr02N717vaW+u+QKQKCHW3gLKTsImyJYGwyL5nuZ4/ZoAQAQNm5pfMfF7nzJn5LTPzvSA5Vz5zXXP9enBOr26YaVEMCR8KWEG060Ajd71azRk5SXz/Qk0NFBERkdBgZpzbJ5Nz+2RSt30fz320nhfm1jJj2SZ6ZSVy4/AeXDm4gOS4aK9LFQk4zU8Lol+/sZzNuw/wu6sriI3S/GQREREJPYXpCdwxpi+z7ryA33+jgqS4aO6dspRhv36LX1TVsGrTbq9LFAkojWAFyQertvDC3Fr+8/yeVHRP87ocERERkYCKi47kysGFXDm4kMW1O3h69jpenFfLP+asY3jPbtw4vJjR/XOIitTn/RJaFLCCYM/BJu58tZqeWYn8+KIzvC5HREREJKgquqfxf7uncc+l/Xhxbi3PzFnHd59dQF5qHN8aWsQ1ZxeRlRzrdZkiHUIBKwgenracDTv38+rf6RQAABy0SURBVMr/Hq6lS0VERCRsZSTG8N2Rvbjlaz15e8Vmnp69lkdmfMKjb63i0vI8bhjeg8FFaVoUQ7o0BawAm/XZVp6Zs57/dW4JZxVneF2OiIiIiOciI4zR/XMY3T+Hz7bs4R+z1/Hq/DqqFm2grCCFG4f1YPzAfH0wLV2SJr0G0L5DvqmBPbol8JOLS70uR0RERKTT6ZWVxH3jBzDn7gt5cGIZh5pauOPVJQx76C1+PXU56z/f53WJIqdEI1gB9NvpK1m/bR8v3jKM+Bh9AiMiIiJyIomxUVw/rJhvDS3iozXbeHr2Wp74cA3//cFqRpVmc+PwYr7WJ4uICE0flM5NAStA5q7dxlOz13LT8GKG9uzmdTkiIiIiXYKZMaxnN4b17EbDzgM899E6nvu4lpv/Ppce3RK4flgxXz+rO6kJuqaWdE6aIhgA+w81c8crSyhMj+eOMX29LkdERESkS8pNjeP2i0uZdecFPHrtQDKTYnnwjeUMfehf3DVpCcs27PK6RJEv0AhWAPx+5krWbN3Lc98ZSmKs/olFREREvoqYqAgmDCxgwsAClm7YyT9mr2Pywnqe/7iWs3ukc8PwHowZkEtMlMYOxHv667+DLVi/nSc+XMN1Q4s4p3em1+WIiIiIhJQB+ak8fNWZ3DW2Hy/Pr+Xp2ev4wfMLyUqO5bohRVw3tIiclDivy5QwpoDVgQ40NvPTlxeTmxLHXWM1NVBEREQkUFITovnOeT359ogS3lu1hadnreX/vb2Kx975lEvKcrlxWDFDSjJ0TS0JunYFLDMbAzwKRAJ/c8493Ob4H4BR/s0EINs5l+Y/1gxU+4+td86N74jCO6NH31rFZ1v28tS3h5Acpy9eioiIiARaRIQxqjSbUaXZrPt8L8/MWcdL8+p4Y8lG+uYmc8PwYiYOLNDXNiRovvQnzcwigceA0UAdMNfMpjjnlh0+xzn341bnfx8Y1Ool9jvnBnZcyZ3TkrodPP7+ar5RWcj5Z2R5XY6IiIhI2Cnulsg9l/bn9tGlTFlcz1Oz1nHP5BoenraCq88q5IZhxfTMSvK6TAlx7YnyQ4BPnXOrAczsBWACsOwE538TuLdjyusaDjY189OXl5CZFMM9l/b3uhwRERGRsBYfE8k1ZxfxjcruLFi/nadmreOZOev4+7/Xcl6fTG4a3oNRfbOJ1DW1JADaE7AKgNpW23XA0OOdaGbFQAnwdqvdcWY2D2gCHnbOVR3nebcAtwAUFRW1r/JO5LG3P2Xlpt08eXMlqfGaGigiIiLSGZgZZxVncFZxBpt39+OFj2t57qP1fOfpeRSmx3P9sGKuqexOemKM16VKCOnotSyvBV5xzjW32lfsnKsErgP+aGa92j7JOfe4c67SOVeZldW1ptct3bCTP7/7GVcOKuCCvjlelyMiIiIix5GdHMcPLuzDBz8bxZ+/NZjC9HgenraCYQ+9xU9eXsySuh1elyghoj0jWPVA91bbhf59x3MtcGvrHc65ev/9ajN7F9/3sz475Uo7ocbmFn768hLSE2P45eWaGigiIiLS2UVHRjCuPI9x5XmsbNjNP+asZdKCel6ZX8fA7mncOLyYsWV5xMdEel2qdFHtGcGaC/QxsxIzi8EXoqa0PcnM+gLpwOxW+9LNLNb/OBMYwYm/u9Xl/OXdz1i2cRcPTiwjLUFDyyIiIiJdSWluMg9OLGfO3Rdy3+X92XWgkdtfWkzlgzO5/aVFfLBqC80tzusypYv50hEs51yTmd0GvIlvmfYnnXNLzex+YJ5z7nDYuhZ4wTnX+qewH/BXM2vBF+Yebr36YFe2omEXf3p7FZdX5HPJgFyvyxERERGR05QSF83NI0q46ZwezFm9jaqF9Uyt2cikBfVkJ8dyeUU+VwwqYEB+iq6rJV/Kjs1D3qusrHTz5s3zuoyTampu4Yo/z2LDjv3MvP18MvTFSBGRDmVm8/3f3+00ukL/JCId50BjM++s2MzkhfW8s3Izjc2OXlmJXDGogAkDC+iekeB1iRJk7e2bdMW10/D4B6uprt/JY9cNVrgSERERCUFx0ZGMLc9jbHkeO/YdYmp1A1UL63lkxic8MuMTKovTmTiogEvL87QKoRxDAesUfbp5N3+cuYqxZblcemae1+WIiIiISIClJcRw3dAirhtaRN32fby2aANVC+v5eVUNv/rnUs4/I5srBhVwYb9s4qK1OEa4U8A6Bc0tjp++soTE2Ejun1DmdTkiIiIiEmSF6QncOqo33xvZi2Ubd1G1sJ4pizfwr+WbSIqNYmxZLhMHFTCsZzddyDhMKWCdgic/XMPC9Tt49NqBZCXHel2OiIiIiHjEzBiQn8qA/FTuHNuPOas/p2phPdNqGnh5fh05KbGMr8hn4qAC+udpcYxwooDVTqu37OGRGSu5qF8O4yvyvS5HRERERDqJyAhjRO9MRvTO5IGJZfxr+SaqFm7g7/9ey39/sIYzcpKYMLCACQPzKUzX4hihTgGrHVpaHD97dQmxURH8+ooyfQIhIiIiIscVFx3JZWfmc9mZ+Wzfe4g3qjdStbCe3725kt+9uZIhPTKOLI6RmhDtdbkSAApY7fD07LXMXbudR75eQXZKnNfliIiIiEgXkJ4Yw/XDirl+WDG12/bx2qJ6Ji+s5+7J1dw3ZSkjS7O4YlABo/pqcYxQooD1JdZ/vo/fTF/JyNIsrhpc4HU5IiIiItIFdc9I4LYL+nDrqN7U1O+iapFvcYwZyzaRHBfFuLI8Jg4qYGhJBhFaHKNLU8A6icNTA6MijIeuLNfUQBERERH5SsyM8sJUygtTuXtcP2Z9tpXJC+t5fckGXpxXS15qHOMH5jNxYAH98lK8LldOgwLWSTz38Xpmr/6ch68sJy813utyRERERCSEREYY5/XJ4rw+Weyf2MzM5ZuoWljPEx+s4a/vraZvbvKRxTHy0/S3aFehgHUCddv38dDU5ZzXJ5Nrzu7udTkiIiIiEsLiYyIZX5HP+Ip8Pt9z8MjiGL+ZvoLfvrmCIT0yuGJQAWPL80iN1+IYnZkC1nE457hrUjWApgaKiIiISFB1S4rlxuE9uHF4D9Z9vpeqhRt4bVE9d06q5pevLeWCvtlMHFTAqL5ZxEZpcYzORgHrOF6aV8sHq7bywMQyXatARERERDxT3C2RH17Uhx9c2JsldTupWlTPPxdvYPrSBlLiorj0zDwmDizg7B5aHKOzUMBqY+PO/Tz4+nKG9czgW0OKvC5HRERERAQzo6J7GhXd07hnXD8+/HQrry3awGuLNvD8x7UUpMUfWRyjNDfZ63LDmgJWK8457p5UTVOL47dXVehTABERERHpdKIiIxhZms3I0mz2HWpi5rJNTF5Yz+Pvr+Yv735Gv7wUrhiUz/iKAnJTdQ3XYFPAamXSgnreWbmFey/vT1E3TQ0UERERkc4tISbKv9JgAVv3HOT1xRuYvGgDv566goemrWB4z25MHFjAmPJcUuK0OEYwKGD5bd51gF/9cyln90jnpuE9vC5HREREROSUZCbFcvOIEm4eUcKarXupWlhP1aJ67nh1CT9/rYaL+mUzcWABI0uziYmK8LrckKWAhW9q4D1VNRxsauG3V2tqoIiIiIh0bSWZifx49Bn86KI+LKrdQdXCel5fspGp1Q2kJUQzrjyPCRX5VPbIIFJ/+3YoBSxgyuINzFy2iXvG9aMkM9HrckRE5CsyszHAo0Ak8Dfn3MMnOO8q4BXgbOfcvCCWKCISFGbGoKJ0BhWl8/PL+vPhqq1ULapn0oI6nvtoPZlJsVwyIIdx5XkMLckgKlIjW19V2AesLbsPct+UpQwqSuPb55Z4XY7IUc75bjhwLa1urbaPHGt739LmeW0en/BY29c80bE273naNQIRkWCREBHhv49sc38q+yOOc96X7Nd17kKOmUUCjwGjgTpgrplNcc4ta3NeMvBD4KPgVykiEnzRkRGM6pvNqL7Z7D3YxNsrNjOtZiOTFtTz7EfrSU+I5uL+uYwtz+WcXpmaRniawj5g3Tulhr2Hmvnd1WdqeFROzjloboTGfdC4H5r2++4b9x/dd8z9gRMfazrRsf2+Yy3NgPO6xeHB2hvUvkLQi4iC2GSISz16i005djsuFeLSIC4FIvUl5K9oCPCpc241gJm9AEwAlrU57wHgN8BPg1ueiIj3EmOjuLwin8sr8tl/qJn3PtnM1OoG3qjeyIvzakmJi+Ki/jmMK8vj3D6ZxEXrgsbtFdYBa2q1bx7qHWNK6Z2t6wV0WYeDT1PbsNP28QmOtet5/n2u+dTri4iG6ASIjoPoeP9j/31iFkTFHbsvKtb3B/nh0ZXW9xzebn2s9f62922f0+acEx47lddsZ41HjrV+f3xh0rX475tb3be02Q7G/uPVcar7W6ClCZoOHt3f0gQHd8OBnXBw19HRuxOJTjhO+PqyYJbqC2dxqb6fofBWANS22q4DhrY+wcwGA92dc2+Y2QkDlpndAtwCUFSkayOKSGiKj4lkTFkeY8ryONDYzIertjKtpoGZyxqYtKCepNgoLuibzbjyXM4/I5v4GIWtkwnbgLVt7yF+UVXDmYWp3HJeT6/LCR8tzXBoDxzaCwf3wKHd/vs9R7ePHNvj+6P08LETBqAgBZ/o+FaPT3AsKv6L+zQaIa21tPh/pnf5AtcXbrvgwI5j9+3ZDFtXHX1OS9PJ3yMqrp3BrNWoWet9UXEhPXXSzCKA3wM3f9m5zrnHgccBKisrNawsIiEvLjqSi/rncFH/HA41lTPrs61Mr2ngzaUNTFm8gfjoSEb1zWJsWR6j+maTFBu2ceKEwvZf5L4pS9l1oJHnrh6mL/OdzOE/Bo+EolaB50gA2ntsQDomMLV53LivnW9sEJMEsUlH76MTITFTwUe6togIf6BJgdTCU3++c77fo/YEs8MjZvu3w/a1vu39O6Cl8eTvERnTjmB2kluM54sF1QPdW20X+vcdlgyUAe+aL0jmAlPMbLwWuhAROSom6ugFjR+cWMZHa7YxrWYj02s2MbW6gZioCM4/I4tx5blc2C9H19nyC8uANcOfwG8ffQaluSE2NbClBRr3Hj/cHBOA9n5xhOh45zfubf97xyS1CUXJkJL/xX2tt090LDohpD9BFzltZr4AE5Po+/06Vc75vud3JJQdDmM7vhjMWm/vqj/6nKb9J379rL5wq+drRswF+phZCb5gdS1w3eGDzrmdQObhbTN7F/iJwpWIyIlFRUYwoncmI3pn8qvxZcxft52p1RuZXtPAzGWbiI40zu2dydjyPEb3yyE9Mcbrkj0TdgFrx75D3FNVQ/+8FL47spfX5bTfwd2wY32b2zrYWec7drDVKFN7F0eITjx2hCgmCZJyodvxwlAixCS3OT/56LHoRN8n8yLSuZkdHcVNzj2912g6ePxwdnCX78MRjznnmszsNuBNfMu0P+mcW2pm9wPznHNTvK1QRKRri4wwhpRkMKQkg19e1p+FtTuYXuNb2+CdlUuIjDDO6dWNsWV5XDwgh8yk8PpusDnXuaaUV1ZWunnzAvch4u0vLWLKog28dtsIBuSnBux9TtnBPbCz1hectq/zhafWYWr/tmPPj4qHtCLfFKO41KOBJyaxfaNFMYm+1c1ERDohM5vvnKv0uo7WAt0/iYh0dc45aup3MbVmI9OqN7L2831EGAwpyWBceR6XDMglJyXO6zJPW3v7prAawXp7xSYmLajnBxf0Dn64OrQXdtQeHXlqG6D2fX7s+ZGxvgCVXgwFg32P04ogrdh3n5ilKXQiIiIi0mmYGeWFqZQXpnLHJaWsaNjNtOqNTKtp4JevLeXeKUs5qyidseV5jCnLpSAt3uuSAyJsAtauA43cPamG0pxkbrugT8e/waF9R0egDoen7a1C1L6tx54fGQtp3X1hKW/g8QOUptyJiIiISBdkZvTLS6FfXgq3X1zKqk27mVbTwLSaBh54fRkPvL6Miu5pjC3LZWxZLsXdPF8gqcOETcD6P68vZ8uegzx+41mnd1Xqxv1tRqDafBdq75Zjz4+MgVR/gOp32bHhKa0IErMVoEREREQkLPTJSaZPTjI/uLAPa7bu9a9G2MDD01bw8LQVDMhP8YWt8jx6ZSV5Xe5XEhYB6/1PtvDivFq+O7IXZxamHf+kxgP+Eai24cl/27Pp2PMjoo+OQJWO9YenVgEqKUcBSkRERESkjZLMRL43sjffG9mb2m37mF7TwLSajTwy4xMemfEJpTnJjCnLZVx5HmfkJGFd7GsxIb/IxZ6DTVzyh/dJiW6h6voiYvfUHTt170iAajj2iRHRvgUk2k7dS/ffJ+UqQImIBIgWuRARCT8bd+7nzZoGptY0MHftNpyDnlmJ/mmEeQzIT/E0bLW3bwrNgLW0ChqWwI71rPtsBbF768i17ceeExF1/AB1+HFyrlbZExHxiAKWiEh427z7ADOWbmJazUbmrN5Gc4ujKCPhyDTCisLUoIet8F5FcP7fYc0HHEjMp353Mok555BbVtEqQBX5LtCpACUiIiIi0ulkJ8dx/bBirh9WzLa9h5i5rIGp1Q088eEa/vr+avJT4xhTlse48lwGF6UTEdF5phGGZsD6+v+wl3jG/GkWkSnGtFu+BjEKUyIiIiIiXU1GYgzXnF3ENWcXsXNfI/9a7hvZembOOp789xqyk2MZ459GOKQkg0iPw1ZoBqz4dH43ZSl12/fz4i3DiVe4EhERERHp8lITornqrEKuOquQ3QcaeXvFZqZVN/DSvFqenr2ObokxXDwgl3HluQzr2Y3oyOCvmRCSAevjNdv4n1lrufmcHgwpyfC6HBERERER6WDJcdFMGFjAhIEF7DvUxLsrtzC1eiNTFtXz/MfrSUuIZnS/HMaV53FO727ERgVn0CXkApZzjl/9cyndM+K5Y0yp1+WIiIiIiEiAJcREMa48j3HleRxobOb9T7YwvaaB6TUNvDy/jj99cxCXV+QHpZaQC1hmxn9dfxbb9x0iISbkmiciIiIiIicRFx3JxQNyuXhALgebmpn16edBndUWkgmke0YC3TMSvC5DREREREQ8FBsVyai+2UF9z3Z968vMxpjZSjP71MzuPM7xP5jZIv/tEzPb0erYTWa2yn+7qSOLFxERERER6Uy+dATLzCKBx4DRQB0w18ymOOeWHT7HOffjVud/Hxjkf5wB3AtUAg6Y739um6v+ioiIiIiIdH3tGcEaAnzqnFvtnDsEvABMOMn53wSe9z++BJjpnNvmD1UzgTFfpWAREREREZHOqj0BqwCobbVd59/3BWZWDJQAb5/Kc83sFjObZ2bztmzZ0p66RUREREREOp2OvvLWtcArzrnmU3mSc+5x51ylc64yKyurg0sSEREREREJjvYErHqge6vtQv++47mWo9MDT/W5IiIiIiIiXVp7AtZcoI+ZlZhZDL4QNaXtSWbWF0gHZrfa/SZwsZmlm1k6cLF/n4iIiIiISMj50lUEnXNNZnYbvmAUCTzpnFtqZvcD85xzh8PWtcALzjnX6rnbzOwBfCEN4H7n3LaObYKIiIiIiEjn0K4LDTvnpgJT2+z7ZZvt+07w3CeBJ0+zPhERERERkS7DWg04dQpmtgVY1wEvlQls7YDX6QrCpa3h0k4In7aGSzshfNraUe0sds51qlWPOqh/CpefA1BbQ1G4tBPCp63h0k7omLa2q2/qdAGro5jZPOdcpdd1BEO4tDVc2gnh09ZwaSeET1vDpZ2nK5z+fdTW0BMu7YTwaWu4tBOC29aOXqZdREREREQkbClgiYiIiIiIdJBQDliPe11AEIVLW8OlnRA+bQ2XdkL4tDVc2nm6wunfR20NPeHSTgiftoZLOyGIbQ3Z72CJiIiIiIgEWyiPYImIiIiIiARVyAUsM3vSzDabWY3XtQSSmXU3s3fMbJmZLTWzH3pdU6CYWZyZfWxmi/1t/ZXXNQWSmUWa2UIze93rWgLJzNaaWbWZLTKzeV7XEyhmlmZmr5jZCjNbbmbDva4pEMys1P9/efi2y8x+5HVdnUW49E0QPv2T+qbQFC59E4RH/+RV3xRyUwTN7GvAHuBp51yZ1/UEipnlAXnOuQVmlgzMByY655Z5XFqHMzMDEp1ze8wsGvgQ+KFzbo7HpQWEmd0OVAIpzrnLvK4nUMxsLVDpnAvp62+Y2VPAB865v5lZDJDgnNvhdV2BZGaRQD0w1DnXEdc17PLCpW+C8Omf1DeFpnDpmyD8+qdg9k0hN4LlnHsf2OZ1HYHmnNvonFvgf7wbWA4UeFtVYDifPf7NaP8ttD4Z8DOzQuBS4G9e1yJfnZmlAl8DngBwzh0K5c6rlQuBzxSujgqXvgnCp39S3yRdWZj2T0Hrm0IuYIUjM+sBDAI+8raSwPFPTVgEbAZmOudCta1/BO4AWrwuJAgcMMPM5pvZLV4XEyAlwBbg7/6pNX8zs0SviwqCa4HnvS5CvBfq/ZP6ppAUDn0ThGf/FLS+SQGrizOzJOBV4EfOuV1e1xMozrlm59xAoBAYYmYhN8XGzC4DNjvn5ntdS5Cc65wbDIwFbvVPoQo1UcBg4C/OuUHAXuBOb0sKLP80k/HAy17XIt4Kh/5JfVNICoe+CcKsfwp236SA1YX553y/CjzrnJvkdT3B4B++fgcY43UtATACGO+f//0CcIGZPeNtSYHjnKv3328GJgNDvK0oIOqAulafar+Cr0MLZWOBBc65TV4XIt4Jt/5JfVPoCJO+CcKvfwpq36SA1UX5v1z7BLDcOfd7r+sJJDPLMrM0/+N4YDSwwtuqOp5z7i7nXKFzrge+Yey3nXPXe1xWQJhZov/L7/inJFwMhNzqas65BqDWzEr9uy4EQuqL/sfxTTQ9MKyFS/+kvin0hEvfBGHZPwW1b4oK1hsFi5k9D4wEMs2sDrjXOfeEt1UFxAjgBqDaP/8b4G7n3FQPawqUPOAp/+ovEcBLzrmQXiY2DOQAk31/hxEFPOecm+5tSQHzfeBZ//SE1cB/eFxPwPj/IBkN/KfXtXQ2YdQ3Qfj0T+qbQk849U0QJv2TF31TyC3TLiIiIiIi4hVNERQREREREekgClgiIiIiIiIdRAFLRERERESkgyhgiYiIiIiIdBAFLBERERERkQ6igCXSBZnZSDPTcsAiItJpqG8S8VHAEhERERER6SAKWCIBZGbXm9nHZrbIzP5qZpFmtsfM/mBmS83sLTPL8p870MzmmNkSM5tsZun+/b3N7F9mttjMFphZL//LJ5nZK2a2wsyeNf+VEUVERE5GfZNIYClgiQSImfUDrgFGOOcGAs3At4BEYJ5zbgDwHnCv/ylPAz9zzp0JVLfa/yzwmHOuAjgH2OjfPwj4EdAf6AmMCHijRESkS1PfJBJ4UV4XIBLCLgTOAub6P8CLBzYDLcCL/nOeASaZWSqQ5px7z7//KeBlM0sGCpxzkwGccwcA/K/3sXOuzr+9COgBfBj4ZomISBemvkkkwBSwRALHgKecc3cds9PsF23Oc6f5+gdbPW5Gv88iIvLl1DeJBJimCIoEzlvA1WaWDWBmGWZWjO/37mr/OdcBHzrndgLbzew8//4bgPecc7uBOjOb6H+NWDNLCGorREQklKhvEgkwfaogEiDOuWVm9nNghplFAI3ArcBeYIj/2GZ8c+EBbgL+y99JrQb+w7//BuCvZna//zW+HsRmiIhICFHfJBJ45tzpjgCLyOkwsz3OuSSv6xARETlMfZNIx9EUQRERERERkQ6iESwREREREZEOohEsERERERGRDqKAJSIiIiIi0kEUsERERERERDqIApaIiIiIiEgHUcASERERERHpIApYIiIiIiIiHeT/A/jge/qe1YehAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 864x576 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Loss: 0.3367 Acc: 0.9360\n",
      "Val Loss: 1.0571 Acc: 0.7186\n",
      "Best Val Accuracy: 0.7230000000000001\n",
      "\n",
      "Training complete in 13m 17s\n",
      "Best val Acc: 0.723000\n"
     ]
    }
   ],
   "source": [
    "#Train\n",
    "model_ft = train_model(model_ft, dataloaders, dataset_sizes, criterion, optimizer_ft, exp_lr_scheduler,\n",
    "                       num_epochs=7)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# torch.save(model_ft.state_dict(), \"./models/resnet18_256_64.pt\") "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# torch.save(model_ft, \"./models/resnet18_64_full_model.pt\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
